<p>使用<code> indexOf </code>来判断某个值是否存在应该是要 <code>indexOf() > -1</code>，写成 <code>indexOf() > 0</code> 可能会错过第一个元素。如果只想检查是否在<code> String </code>或<code> List </code>中包含一个值，请考虑使用<code> contains </code>方法。</p>

<p>对于字符串，如果要真正找到某个特定字符索引之后的第一个索引，则使用<code> indexOf </code>的版本，该版本带有起始位置参数。</p>
<p>此每当测试从<code> String </code>或<code> List </code>检索到的<code> indexOf </code>值的正值时，该规则都会引起问题。</p>

<h2>不规范的代码示例</h2>

<pre>
String color = "blue";
String name = "ishmael";

List&lt;String&gt; strings = new ArrayList&lt;String&gt;();
strings.add(color);
strings.add(name);

if (strings.indexOf(color) &gt; 0) {  // Noncompliant
  // ...
}
if (name.indexOf("ish") &gt; 0) { // Noncompliant
  // ...
}
if (name.indexOf("hma") &gt; 2) { // Noncompliant
  // ...
}
</pre>

<h2>正确的代码示例</h2>

<pre>
String color = "blue";
String name = "ishmael";

List&lt;String&gt; strings = new ArrayList&lt;String&gt;();
strings.add(color);
strings.add(name);

if (strings.indexOf(color) &gt; -1) {
  // ...
}
if (name.indexOf("ish") &gt;= 0) {
  // ...
}
if (name.indexOf("hma") &gt; -1) {
  // ...
}
</pre>
